package com.lxy.cxcyxmmsbackend.sys.utils;

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.UUID;

public class UUIDUtil {

    public static String getUUID8(String machineId, Integer length) {
        if (length > 10) {
            throw new RuntimeException("uuid的HashCode不可超过10位");
        }
        if (length < 1) {
            throw new RuntimeException("uuid的HashCode长度至少1位");
        }
        // 1.开头2位，标识业务代码或机器代码（可变参数）
        // 2.中间8位整数，标识日期
        SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
        String dayTime = sdf.format(new Date());
        // 3.生成uuid的hashCode值
        int hashCode = UUID.randomUUID().toString().hashCode();
        // 4.可能为负数
        if (hashCode < 0) {
            hashCode = -hashCode;
        }
        // 5.算法处理: 0-代表前面补充0; 10-代表长度为10; d-代表参数为正数型
        String value = machineId + String.format("%0" + length + "d", hashCode) + dayTime;
        return value;
    }
}
